package com.newtouch.bxzs.database.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.newtouch.bxzs.database.model.bo.RoleBO;
import com.newtouch.bxzs.database.model.bo.RoleDetailBO;
import com.newtouch.bxzs.database.model.vo.GetAllRoleVO;
import com.newtouch.bxzs.database.model.vo.GetRoleListVO;
import com.newtouch.bxzs.database.model.vo.UpdateRoleVO;
import com.newtouch.bxzs.database.model.vo.UpdateStateVO;

import java.util.List;

/**
 * 角色Service接口:
 *
 * <p>
 * <b>History:</b>
 * <table border="1">
 * <tr>
 * <th>Date</th>
 * <th>Operator</th>
 * <th>Memo</th>
 * </tr>
 * <tr>
 * <td>2021/1/4 14:19</td>
 * <td>zhangqianyang</td>
 * <td>Create</td>
 * </tr>
 * </table>
 *
 * @author zhangqianyang
 * @version 1.0.0
 * @since 1.0.0
 */
public interface RoleService {
    /**
     * 查询角色列表信息
     * @param roleListVO 查询参数
     * @return IPage<RoleBO> 分页结果
     */
    IPage<RoleBO> listRole(GetRoleListVO roleListVO);

    /**
     * 查询角色详情
     * @param roleId 角色id
     * @return RoleDetailBO 角色详情
     */
    RoleDetailBO getRoleDetail(String roleId);

    /**
     * 添加/修改角色
     * @param updateRoleVO 添加/修改角色参数
     */
    void updateRole(UpdateRoleVO updateRoleVO);

    /**
     * 启用/禁用角色
     * @param updateStateVO 参数
     */
    void updateState(UpdateStateVO updateStateVO);

    /**
     * 删除角色
     * @param roleIdList 角色id
     */
    void deleteRole(List<String> roleIdList);

    /**
     * 查询全部角色
     * @param getAllRoleVO 参数
     * @return List<RoleBO>
     */
    List<RoleBO> listAllRole(GetAllRoleVO getAllRoleVO);
}
